// ------------------------------------------------------------
// Forms
//
// All things form, input, textarea, select, radio and checkbox
//
// * Form Wrapper
// * Form Groups
// * Input Icons
// * Radio & Checkbox wrappers
// * Fieldsets & Legends
// * Inputs, selects, and textareas
// * Checkboxes
// * Radio Buttons
// * Select Component
// ------------------------------------------------------------


//
// Form Wrapper
// --------------------------------------------------

form {

    label {
        display: block;
        color: $darkgrey;
        font-size: 1.3rem;
        font-weight: bold;
    }
}


//
// Form Groups
// --------------------------------------------------

.form-group {
    position: relative;
    margin-bottom: 1.6em;
    width: 100%;
    max-width: 500px;

    p {
        margin: 4px 0 0 0;
        color: #B3B2A8;
        font-size: 1.3rem;
    }

    label {
        margin-bottom: 4px;
    }

    @media (max-width: 550px) {
        max-width: 100%;
    }

}//.form-group


//
// Input Icons
// --------------------------------------------------

.input-icon[class*='icon-'] {
    position: relative;
    display: block;

    input[type="email"],
    input[type="number"],
    input[type="password"],
    input[type="search"],
    input[type="tel"],
    input[type="text"],
    input[type="url"],
    input[type="date"] {
        padding-left: 3.2rem;
    }

    .gh-select {
        select {
            padding-left: 3.2rem;
        }
    }

    &:before {
        position: absolute;
        top: 50%;
        left: 1.1rem;
        font-size: 1.3rem;
        transform: translateY(-52%);
        z-index: 100;
    }
}//.thing[class*='icon-']


//
// Radio & Checkbox wrappers
// --------------------------------------------------

.for-radio,
.for-checkbox {
    @include clearfix;

    label {
        display: block;
        padding-bottom: 4px;

        p {
            font-weight: normal;
            color: #000;
        }

        &:hover {

            input:not(:checked) + .input-toggle-component {
                border-color: $midbrown;
            }
        }
    }

    input {
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: -9999px;
    }

    .input-toggle-component {
        position: relative;
        top: 1px;
        display: inline-block;
        float: left;
        width: 18px;
        height: 18px;
        margin-right: 7px;
        background: #F7F7F3;
        border: 1px solid $lightbrown;
    }

    p {
        font-weight: normal;
        color: #B3B2A8;
        white-space: nowrap;
    }
}//.for-radio, .for-checkbox

//
// Fieldsets & Legends
// --------------------------------------------------

fieldset {
    border: none;
    margin: 0 0 3em 0;
    padding: 0;
}

legend {
    display: block;
    width: 100%;
    margin: 2em 0;
    border-bottom: $lightbrown 1px solid;
    font-size: 1.2em;
    line-height: 2.0em;
    color: $brown;
}


//
// Inputs, selects, and textareas
// --------------------------------------------------

.input,
input[type="email"],
input[type="number"],
input[type="password"],
input[type="search"],
input[type="tel"],
input[type="text"],
input[type="url"],
input[type="date"],
textarea,
.gh-select,
select {
    display: block;
    padding: 8px 10px;
    width: 100%;
    border: 1px solid #E0DFD7;
    border-radius: $border-radius;
    -webkit-appearance: none;

    font-size: 1.4rem;
    font-weight: normal;
    color: $darkgrey;

    transition: border-color 0.15s linear;

    &.error {
        border-color: $red;
    }

    &:focus {
        border-color: $brown;
        outline: 0;
    }
}

textarea {
    width: 100%;
    max-width: 500px;
    min-width: 250px;
    height: auto;
    min-height: 10rem;
    line-height: 1.5;
    resize: vertical;
}


//
// Checkboxes
// --------------------------------------------------

.for-checkbox {

    .input-toggle-component {
        border-radius: $border-radius;
    }

    label {

        .input-toggle-component {
            transition: background 0.15s ease-in-out, border-color 0.15s ease-in-out;

            &:before {
                transition: opacity 0.15s ease-in-out;
                content: '';
                position: absolute;
                width: 10px;
                height: 6px;
                top: 4px;
                left: 3px;
                border: 2px solid #fff;
                border-top: none;
                border-right: none;
                transform: rotate(-45deg);
                opacity: 0;
            }
        }

        input:checked + .input-toggle-component {
            background: $green;
            border-color: darken($green, 10%);

            &:before {
                opacity: 1;
            }
        }
    }//label
}//.for-checkbox


//
// Radio Buttons
// --------------------------------------------------

.for-radio {

    .input-toggle-component {
        border-radius: 100px; // Use px to prevent ovals
    }

    label {

        .input-toggle-component {
            transition: background 0.15s ease-in-out, border-color 0.15s ease-in-out;

            &:before {
                transition: opacity 0.15s ease-in-out;
                content: '';
                position: absolute;
                width: 8px;
                height: 8px;
                top: 4px;
                left: 4px;
                background: #FFF;
                border-radius: 100%;
                opacity: 0;
            }
        }

        input:checked + .input-toggle-component {
            background: $green;
            border-color: darken($green, 10%);

            &:before {
                opacity: 1;
            }
        }
    }//label
}//.for-radio


//
// Select Component
// --------------------------------------------------

.gh-select {
    position: relative;
    display: block;
    overflow: hidden;
    width: 100%;
    max-width: 100%;
    padding: 0;
    border-width: 0;

    @include icon-after($i-chevron-down, 0.85em, $midbrown) {
        position: absolute;
        top: 50%;
        right: 0.8em;
        margin-top: -0.5em;
        pointer-events: none;
    };

    select {
        appearance: none;
        -webkit-appearance: none;
        -moz-appearance: window;
        text-indent: 0.01px;
        text-overflow: "";
        background: #fff;
        outline: none;
        padding: 8px 10px;
        line-height: normal;

        // This hides native gh-select button arrow in IE
        &::-ms-expand {
            display: none;
        }

        // Hover style - Not used, but works
        &:hover {}

        // This hides focus around selected option in FF
        &:-moz-focusring {
            color: transparent;
            text-shadow: 0 0 0 #000;
        }
    }//select
}//.gh-select

// Firefox-specific size fixes
@-moz-document url-prefix() {

    .gh-select {
        border-width: 1px;

        select {
            padding: 7px 10px 7px 8px;
        }

        &:focus {
            border-color: $brown;
        }
    }
}